package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;


import modelo.dao.UsuarioDao;
import modelo.dto.Usuario;
import vista.vListadoPuntuacion;
import vista.vTablaPuntuacion;

public class cListaPuntuacion implements ActionListener{

	
	private vListadoPuntuacion lista;
	
	   
	  public cListaPuntuacion()
	   {
			super();
			
			this.lista= new vListadoPuntuacion();
			this.lista.setLocationRelativeTo(null);
			this.lista.setVisible(true);	
			lista.agregarListener(this);
			cargarDadoUnaDificultad(4);
			
	   }
	@Override
	public void actionPerformed(ActionEvent accion) {
		// TODO Auto-generated method stub
		String action=accion.getActionCommand();
		if(action=="Salir"){
			new cMenuPrincipal();
			lista.dispose();
		}if(action=="Consultar"){
			if(lista.getDificultad()=="Basico")
			{
				cargarDadoUnaDificultad(4);
			}else if(lista.getDificultad()=="Intermedio"){
				cargarDadoUnaDificultad(5);
			}else if(lista.getDificultad()=="Dificil"){
				cargarDadoUnaDificultad(6);
			}
		}
			
	}
	

	public void cargarDadoUnaDificultad(int dificultad){
		UsuarioDao usuario = new UsuarioDao();
		List<Usuario> usuarios = usuario.consultarPuntuacion();
		List<Usuario> usuarioDif=new ArrayList<Usuario>();
		for(int i=0; i<usuarios.size();i++){
			if(usuarios.get(i).getNivel().getDificultad()==dificultad)
			{
				usuarioDif.add(usuarios.get(i));
			}
		}
		
		
		Usuario usuario1=new Usuario();
		for(int i=0;i<usuarioDif.size()-1;i++){
			for(int j=0;j<(usuarioDif.size()-1);j++){
				double valor1=Double.parseDouble(String.valueOf(usuarioDif.get(j).getMinutos())+"."
						+String.valueOf(usuarioDif.get(j).getSegundos()));
				double valor2=Double.parseDouble(String.valueOf(usuarioDif.get(j+1).getMinutos())+"."
						+String.valueOf(usuarioDif.get(j+1).getSegundos()));
			    if(valor1>valor2){
			    	usuario1=usuarioDif.get(j);
			    	usuarioDif.set(j , usuarioDif.get(j+1));
			    	usuarioDif.set(j+1, usuario1);
			    }
			   
			}
		}
		
		List<Usuario> usur = new ArrayList<Usuario>();
		int i=0;
		while(i<5&&i<usuarioDif.size()){
			usur.add(i, usuarioDif.get(i));
			i++;
		}
		this.lista.setResultados(new vTablaPuntuacion(usur));
	}

}
